// 首页表单处理脚本 - 简化版本
document.addEventListener('DOMContentLoaded', function() {
    console.log('✅ 脚本已加载');
    
    const form = document.getElementById('fortuneForm');
    const nameInput = document.getElementById('name');
    const birthDateInput = document.getElementById('birthDate');
    const cityInput = document.getElementById('city');
    const submitBtn = document.querySelector('.submit-btn');
    const btnText = document.querySelector('.btn-text');
    
    // 验证关键元素
    if (!form || !submitBtn || !btnText) {
        console.error('❌ 关键元素未找到');
        alert('页面加载错误，请刷新重试');
        return;
    }
    
    console.log('✅ 表单元素已找到');
    
    // 表单提交处理
    form.addEventListener('submit', async function(e) {
        console.log('🚀 表单提交事件触发');
        e.preventDefault();
        
        // 简化验证
        const selectedGender = document.querySelector('input[name="gender"]:checked');
        
        if (!nameInput.value.trim()) {
            alert('请输入姓名');
            return;
        }
        
        if (!birthDateInput.value) {
            alert('请选择出生日期');
            return;
        }
        
        if (!selectedGender) {
            alert('请选择性别');
            return;
        }
        
        const userData = {
            name: nameInput.value.trim(),
            birthDate: birthDateInput.value,
            gender: selectedGender.value
        };
        
        // 添加城市信息（如果有输入）
        const city = cityInput ? cityInput.value.trim() : '';
        if (city) {
            userData.city = city;
        }
        
        console.log('📝 用户数据:', userData);
        await callFortuneAPI(userData);
    });
    
    // API调用函数
    async function callFortuneAPI(userData) {
        console.log('🌐 开始API调用');
        
        try {
            // 显示加载状态
            setLoadingState(true);
            
            console.log('📤 发送请求到 /api/fortune');
            const response = await fetch('/api/fortune', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                },
                body: JSON.stringify(userData)
            });
            
            console.log('📥 收到响应:', response.status);
            
            if (!response.ok) {
                const errorText = await response.text();
                console.error('❌ HTTP错误:', response.status, errorText);
                throw new Error(`服务器错误 (${response.status})`);
            }
            
            const result = await response.json();
            console.log('✅ API响应成功:', result);
            
            if (result.success) {
                // 将结果存储到localStorage
                localStorage.setItem('fortuneResult', JSON.stringify(result.data));
                console.log('💾 结果已存储到localStorage');
                
                // 直接跳转，不使用复杂动画
                console.log('🔄 跳转到结果页面');
                window.location.href = 'result.html';
                
            } else {
                throw new Error(result.error || '算命服务出现错误');
            }
            
        } catch (error) {
            console.error('❌ API调用失败:', error);
            
            let errorMessage = '网络连接失败，请检查网络连接后重试';
            if (error.message.includes('Failed to fetch')) {
                errorMessage = '无法连接到服务器，请确保服务器正在运行';
            } else if (error.message.includes('500')) {
                errorMessage = '服务器内部错误，请稍后重试';
            } else if (error.message && !error.message.includes('HTTP error')) {
                errorMessage = error.message;
            }
            
            alert(`错误: ${errorMessage}`);
            
        } finally {
            setLoadingState(false);
        }
    }
    
    // 设置加载状态
    function setLoadingState(isLoading) {
        console.log('⚙️ 设置加载状态:', isLoading);
        
        if (isLoading) {
            submitBtn.disabled = true;
            btnText.textContent = '计算中...';
            submitBtn.style.opacity = '0.7';
            submitBtn.style.cursor = 'not-allowed';
        } else {
            submitBtn.disabled = false;
            btnText.textContent = '开始算命';
            submitBtn.style.opacity = '1';
            submitBtn.style.cursor = 'pointer';
        }
    }
    
    // 测试服务器连接
    async function testConnection() {
        try {
            const response = await fetch('/health');
            if (response.ok) {
                console.log('✅ 服务器连接正常');
                
                // 显示连接状态
                const statusDiv = document.createElement('div');
                statusDiv.style.cssText = `
                    position: fixed;
                    top: 10px;
                    right: 10px;
                    background: #4caf50;
                    color: white;
                    padding: 5px 10px;
                    border-radius: 3px;
                    font-size: 12px;
                    z-index: 1000;
                `;
                statusDiv.textContent = '服务器在线';
                document.body.appendChild(statusDiv);
                
                // 3秒后移除状态提示
                setTimeout(() => statusDiv.remove(), 3000);
            }
        } catch (error) {
            console.error('❌ 服务器连接失败:', error);
            
            // 显示离线状态
            const statusDiv = document.createElement('div');
            statusDiv.style.cssText = `
                position: fixed;
                top: 10px;
                right: 10px;
                background: #f44336;
                color: white;
                padding: 5px 10px;
                border-radius: 3px;
                font-size: 12px;
                z-index: 1000;
            `;
            statusDiv.textContent = '服务器离线';
            document.body.appendChild(statusDiv);
        }
    }
    
    // 页面加载完成后测试连接
    setTimeout(testConnection, 1000);
});

// 全局错误处理
window.addEventListener('error', function(e) {
    console.error('🚨 全局错误:', e.error);
});

window.addEventListener('unhandledrejection', function(e) {
    console.error('🚨 未处理的Promise错误:', e.reason);
});